package br.uneb.telp.model;

import java.io.FileOutputStream;
import java.io.IOException;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

import br.uneb.telp.util.AcessoMySql;

import com.hp.hpl.jena.rdf.model.Model;
import com.hp.hpl.jena.rdf.model.ModelFactory;
import com.hp.hpl.jena.rdf.model.Resource;
import com.hp.hpl.jena.vocabulary.VCARD;
import com.mysql.jdbc.PreparedStatement;

public class UsuarioETL {
	
	PreparedStatement pstm;
    ResultSet rs;
    String consultaUsuario = "SELECT * FROM USUARIO";

    public List<UsuarioBean> extract() {
        List<UsuarioBean> listUsuario = new ArrayList<UsuarioBean>();
        try {
            AcessoMySql mysql = new AcessoMySql();
            pstm = (PreparedStatement) mysql.conectar().prepareStatement(consultaUsuario);
            rs = pstm.executeQuery();
            UsuarioBean usu;
            while (rs.next()) {
                usu = new UsuarioBean();
                String rsN = rs.getString("nome_completo");
                usu.setPrimeiroNome(rsN.substring(0, rsN.indexOf(" ")));
                usu.setSobrenome(rsN.substring(rsN.indexOf(" ")+1));
                usu.setNomeCompleto(rs.getString("nome_completo"));
                listUsuario.add(usu);
            }
            mysql.desconectar();
        } catch (Exception e) {
            e.printStackTrace();
        }

        return listUsuario;
    }
	
	@SuppressWarnings("unused")
	public void writeModel(List<UsuarioBean> usuarios){
		
		Model model = ModelFactory.createDefaultModel();
		
		for (UsuarioBean usuario : usuarios) {
			Resource resource
			= model.createResource("http://usuario/"+usuario.getPrimeiroNome()+usuario.getSobrenome())
					.addProperty(VCARD.FN, usuario.getNomeCompleto())
					.addProperty(VCARD.N, 
							model.createResource()
							.addProperty(VCARD.Given, usuario.getPrimeiroNome())
							.addProperty(VCARD.Family, usuario.getSobrenome()));
		}
		
		try {
			FileOutputStream fout=new FileOutputStream("//Users//matheusmf//usuarios.rdf");
			model.write(fout, "RDF/XML-ABBREV");
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
	
	public static void main (String args[]) {
		UsuarioETL usuarioETL = new UsuarioETL();
		List<UsuarioBean> usuarios = usuarioETL.extract();
		usuarioETL.writeModel(usuarios);
	}

}
